Mobiele Multi-Agent Systemen

Programming Technology Lab (PROG)
Departement Informatica (DINF)
Vrije Universiteit Brussel (VUB)

Multi-Agents

Multi agent systems are computer systems to which one can delegate tasks. Software agents differ from conventional software in that they are long-lived, semi-autonomous, proactive, and adaptive.

Pattie Maes

Multi-Agents

Onze doelstelling is het ontwikkelen van een mobiele multi agent architectuur die toelaat intelligente software agents op een eenvoudige wijze samen te stellen

Agentteam v/PROG

Structuur

1. Software Agent Definieren

2. Demonstratie

3. Internals

1. Definitie Software Agents

Mobiel Multi-Agent Systeem

Is de taal/library die mobiele multi agents ondersteund

communicatie

migratie

naming

processcontrole

veiligheid

transacties

services

Mobiele Multi Agent

Actieve software component die in staat is te communiceren met andere agents en die kan migreren tussen verschillende	machines.

Agent vs Applications

Wide Area Networks

Mobiele Multi Agent

Objectgericht

Protected Code/Data Space

Single threaded

Agents runnen concurrent

Message sending between agents

Naming/Agent Identifiers

Human Readable

Zelf te kiezen naam

Locatie Transparant

AgentRef = value

Agent heeft een locatie transparante naam

AgentIdentifier is een primitieve value

A1:agentref(“tecra/ses1”);

A1.Iep(<msg>)

A2.Iep(<msg>)

A1

A2

A1

A2

A1.Iep(<msg>)

Looping model

Agent stopt zelf zijn uitvoering en wordt dan herstart

Enkel de agent kan zichzelf verplaatsen

Telescripting

De agent, inclusief state, kan worden stil gelegd

Manager agents worden mogelijk

Mobiliteit is exploiteerbaar

Migratie/Mobiliteit

PositieScheduling (1)

PositieScheduling (2)

A2.agentmove(“system2”)

A2.display(“beep”)

System1

System2

A1

A2

A2

2. Demonstratie

Migrob Agent Systeem

Extentie van Pico:

“Scheme with Tables/Objects”

Prototype based

Expliciet AG

Reificatie

createpoint(x,y)::

{

printx()::display(x);

printy()::display(y);

setx(nx)::x:=nx;

sety(ny)::y:=ny;

clone()

}

a:createpoint(1,2);

a.printx();

Example

a:remotedict(“tecra/ses2”);

createcb()::

{detanswer(welk)::

display(welk);

clone()};

cb:createcb();

a.calcdet([[1,8],[5,6]],cb)

a.calcdet([[1,28],[4,96]],cb)

t:remotedict(“duh.tecra”)

calcdet(matrx,cb)::

{…

agentmove(t);

cb.detanswer(matrx)

}

tecra/ses2

tecra/ses1

Threaded

par(

while(true,display(1)),

{recv(); agentmove(remotedict("void.tecra"))})

a:remotedict("tecra/ses1")

send(a,0)

Agents

Multi

Single Threaded Agents

fsieve():

{prime:recv(sieve[i-1]);

if (i\\2 = 1,
agentmove(remotedict("void.tecra")));

display(prime);

while(true,

{num:recv(sieve[i-1]);

if( (not ((num\\prime)=0)),

send(sieve[i+1],num),

void)})};

Kanguroo Zeef Continued

startsieve():

{for(t:2,t:=t+1,t<100,

send(sieve[2], t))};

collector():

{while(true, recv(sieve[i-1]))}

par(sieve, i, 31, 31, collector(),

sieve, i, 2, 30, fsieve(),

sieve, i, 1, 1, startsieve())

3. Internals

Interpreter

Scanner/Parser

Thunk Based

Primitieve Values

Routeringsmechanisme

Serialisator

Primitive Values

Integer (INT), Fraction (FRC), Void (VOI), Tables (TAB), Closures (CLO), Functions (FUN)

Evironment (ENV)

Remote Environments (RENV)

Thunk Based

Garbage collection

Strong Migration

Persistentie

Eval(<e1>+<e2>)

Eval(+)

Eval(<e1>)

Eval(<e2>)

+	e1	e2	eval

e1	e2	eval swap eval add

12	e2	swap eval add

e2	12	eval add

19	12	add

31

Serialisatie Messages

RENV

ENV

RENV

RENV

ENV

RENV

RENV

From

Network

To

Serialisatie Agents

ENV

_GLOBAL_

RENV

RENV

_GLOBAL_

From

Network

To

0

ENV

ENV

ENV

Routering

Adres van een agent wijzigt niet na migratie

Migratie moet minimale performantie impact hebben

Adres moet zelf te kiezen zijn

Routering

tecr.a

sub1.tecr.a

sub2.tecr.a

sub3.a

a

sub1.tecr.a/ses1

sub1.tecr.a/ses2

sub2.tecr.a/ses1

sub2.tecr.a/ses2

Hoe sub1.tecr.a/ses1

migreren naar sub2.tecr.a ?

Routering

tecr.a

sub1.tecr.a

sub2.tecr.a

sub3.a

a

sub1.tecr.a/ses1

sub1.tecr.a/ses2

sub2.tecr.a/ses1

sub2.tecr.a/ses2

sub1.tecr.a/ses1

Routering

tecr.a

sub1.tecr.a

sub2.tecr.a

sub3.a

a

sub1.tecr.a/ses1

sub1.tecr.a/ses2

sub2.tecr.a/ses1

sub2.tecr.a/ses2

sub1.tecr.a/ses1

sub1.tecr.a/ses1

Concurrentie/Synchronisatie

Asynchrone message sends

Synchronisatieprimitieven nodig

CSP

Pi calculus

Coordinatie

Send/Recv/Sync

Concurrency: CSP

PAR ALT SND RECV binnen agent

SND send message naar andere agent (blocking)

RCV wacht op inkomende message met een bepaald patroon (blocking)

PAR creeert voor elke tak een nieuwe agent en laat ze concurrent runnen

ALT is een probleem omwille van de guards

Concurrency II

SYNC SEND RECV CREATE

CREATE maakt nieuwe gekloonde agent

SEND stuurt bericht naar een agent (async)

RECV ontvangt een bericht van een agent (async)

SYNC blokt tot andere agent gelijk loopt

Treevb

Namespacekloon

Migratie vb

Cloning ?

Positie Optimalisaties Mobiele Multi Agent Systemen

EDS Belgium N.V.

1998-09-11T01:24:36